33 research outputs found

    Usage of Tests in an Open-Source Community: A Case Study with Pharo Developers

    Get PDF
    International audienceDuring the development, it is known that tests ensure the good behavior of applications and improve their quality. We studied developers testing behavior inside the Pharo community in the purpose to improve it. In this paper, we take inspiration from a paper of the literature to enhance our comprehension of test habits in our open source community. We report results of a field study on how often the developers use tests in their daily practice, whether they make use of tests selection and why they do. Results are strengthened by interviews with developers involved in the study. The main findings are that developers run tests every modifications of their code they did; most of the time they practice test selection (instead of launching an entire test suite); however they are not accurate in their selection; they change their selection depending on the duration of the tests and; contrary to expectation, test selection is not influenced by the size of the test suite

    Empirical Study of Programming to an Interface

    Get PDF
    International audienceA popular recommendation to programmers in object-oriented software is to "program to an interface, not an implementation" (PTI). Expected benefits include increased simplicity from abstraction, decreased dependency on implementations , and higher flexibility. Yet, interfaces must be immutable, excessive class hierarchies can be a form of complexity, and "speculative generality" is a known code smell. To advance the empirical knowledge of PTI, we conducted an empirical investigation that involves 126 Java projects on GitHub, aiming to measuring the decreased dependency benefits (in terms of cochange)

    Evaluating the Efficiency of Continuous Testing during Test-Driven Development

    Get PDF
    International audienceContinuous testing is a novel feature within modern programming environments, where unit tests constantly run in the background providing early feedback about breaking changes. One of the more challenging aspects of such a continuous testing tool is choosing the heuristic which selects the tests to run based on the changes recently applied. To help tool builders select the most appropriate test selection heuristic, we assess their efficiency in a continuous testing context. We observe on two small but representative cases that a continuous testing tool generates significant reductions in number of tests that need to be executed. Nevertheless, these heuristics sometimes result in false negatives, thus in rare occasions discard pertinent tests

    Challenges for Layout Validation: Lessons Learned

    Get PDF
    International audienceCompanies are migrating their software systems. The migration process contemplates many steps, UI migration is one of them. To validate the UI migration, most existing approaches rely on visual structure (DOM) comparison. However, in previous work, we experimented such validation and reported that it is not sufficient to ensure a result that is equivalent or even identical to the visual structure of the interface to be migrated. Indeed, two similar DOM may be rendered completely differently. So, we decide to focus on the layout migration validation. We propose a first visual comparison approach for migrated layout validation and experiment it on an industrial case. Hence, from this first experiment and already existing studies on image comparison field, we highlight challenges for layout comparison. For each challenge, we propose possible solutions, and we detail the three main features we need to create a good layout validation approach

    Migrating GWT to Angular 6 using MDE

    Get PDF
    International audienceIn the context of a collaboration with Berger-Levrault, a major IT company, we are working on the migration of a GWT application to Angular. We focus on the GUI aspect of this migration which, even if both are web frameworks, is made difficult because they use different programming languages (Java for one, Typescript for the other) and different organization schemas (e.g. different XML files). Moreover, the new application must mimic closely the visual aspect of the old one so that the users of the application are not disturbed. We propose an approach in three steps that uses a meta-model to represent the GUI at a high abstraction level. We evaluated this approach on an application comprising 470 Java (GWT) classes representing 56 screens. We are able to model all the web pages of the application and 93% of the wid-gets they contain, and we successfully migrated (i.e., the result is visually equal to the original) 26 out of 39 pages (66%). We give examples of the migrated pages, both successful and not

    GUI Migration using MDE from GWT to Angular 6: An Industrial Case

    Get PDF
    International audienceDuring the evolution of an application, it happens that developers must change the programming language. In the context of a collaboration with Berger-Levrault, a major IT company, we are working on the migration of a GWT application to Angular. We focus on the GUI aspect of this migration which, even if both frameworks are web Graphical User Interface (GUI) frameworks, is made difficult because they use different programming languages and different organization schema. Such migration is complicated by the fact that the new application must be able to mimic closely the visual aspect of the old one so that the users of the application are not disrupted. We propose an approach in four steps that uses a meta-model to represent the GUI at a high abstraction level. We evaluated this approach on an application comprising 470 Java (GWT) classes representing 56 pages. We are able to model all the web pages of the application and 93% of the widgets they contain, and we successfully migrated 26 out of 39 pages (66%). We give examples of the migrated pages, both successful and not

    Modular Moose: A new generation software reverse engineering environment

    Get PDF
    International audienceAdvanced reverse engineering tools are required to cope with the complexity of software systems and the specific requirements of numerous different tasks (re-architecturing, migration, evolution). Consequently , reverse engineering tools should adapt to a wide range of situations. Yet, because they require a large infrastructure investment, being able to reuse these tools is key. Moose is a reverse engineering environment answering these requirements. While Moose started as a research project 20 years ago, it is also used in industrial projects, exposing itself to all these difficulties. In this paper we present ModMoose, the new version of Moose. ModMoose revolves around a new meta-model, modular and extensible; a new toolset of generic tools (query module, visualization engine, ...); and an open architecture supporting the synchronization and interaction of tools per task. With ModMoose, tool developers can develop specific meta-models by reusing existing elementary concepts, and dedicated reverse engineering tools that can interact with the existing ones

    Approche Incrémentale pour la Migration des Interfaces Graphiques d’Applications utilisant les Métamodèles

    No full text
    Developers use GUI frameworks to design the graphical user interface of their applications. It allows them to reuse existing graphical components and build applications in a fast way. However, with the generalization of mobile devices and Web applications, GUI frameworks evolve at a fast pace: JavaFX replaced Java Swing, Angular 8 replaced Angular 1.4 which had replaced GWT (Google Web Toolkit). Moreover, former GUI frameworks are not supported anymore. This situation forces organizations to migrate their applications to modern frameworks regularly to avoid becoming obsolete.To ease the migration of applications, previous research designed automatic approaches dedicated to migration projects. Whereas they provide good results, they are hard to adapt to other contexts than their original one. For instance, at Berger-Levrault, our industrial partner, applications are written in generic programming languages (Java/GWT), proprietary “4th generation” languages (VisualBasic 6, PowerBuilder), or markup languages (Silverlight). Thus, there is a need for a language-agnostic migration approach allowing one to migrate various GUI frameworks to the latest technologies. Moreover, when performing automatic migration with these approaches, part of the migrated application still needs to be manually fixed. This problem is even more important for large applications where this last step can last months. Thus, companies need to migrate their application incrementally to ensure end-user continuous delivery throughout the process.In this thesis, we propose a new incremental migration approach. It aims at allowing the migration of large applications while ensuring end-user delivery. It consists of migrating pages using our automatic GUI migration tool, fixing them, and integrating them in a hybrid application. To create our GUI migration tool, we designed a pivot meta-model composed of several packages representing the visual and the behavioral aspects of any GUI. We detailed multiple implementations of our GUI migration tool that extract and generate GUI using different frameworks.We successfully applied our migration approach to a real industrial application at Berger-Levrault. The migrated application is now in production. We also validated our automatic GUI migration tool on several migration projects, includingapplications developed with programming and markup languages. The company is currently using our approach for other migration projects.Les développeurs utilisent des frameworks d’interface graphique (GUI frameworks) pour concevoir l’interface utilisateur graphique de leurs applications. Cela leur permet de réutiliser des composants graphiques existants et de construire des applications rapidement. Cependant, avec la généralisation des appareils mobiles et des applications Web, les GUI frameworks évoluent à un rythme rapide : JavaFX a remplacé Java Swing, Angular 8 a remplacé Angular 1.4 qui avait remplacé GWT (Google Web Toolkit). De plus, les anciens GUI frameworks ne sont plus supportés. Cette situation oblige les organisations à migrer régulièrement leurs applications vers des frameworks modernes pour éviter qu’elles deviennent obsolètes.Pour faciliter la migration des applications, des recherches antérieures ont conçu des approches automatiques dédiées à des projets de migration. Bien qu’elles fournissent de bons résultats, elles sont difficiles à adapter à d’autres contextes que celui d’origine. Par exemple, chez Berger-Levrault, notre partenaire industriel, les applications sont écrites dans des langages de programmation génériques (Java/GWT), des langages propriétaires de “4ème génération” (VisualBasic 6, PowerBuilder), ou des langages de balisage (Silverlight). Il est donc nécessaire d’adopter une approche de migration indépendante du langage, qui permette de faire migrer diverses interfaces graphiques vers les technologies les plus récentes. En outre, lors d’une migration automatique avec ces approches, une partie de l’application migrée doitencore être corrigée manuellement. Ce problème est encore plus important pour les grandes applications où cette dernière étape peut durer des mois. Les entreprises doivent donc migrer leur application de manière incrémentale afin de garantir une livraison continue à l’utilisateur final tout au long du processus.Dans cette thèse, nous proposons une nouvelle approche de migration incrémentale. Elle vise à permettre la migration de grandes applications tout en garantissant la livraison à l’utilisateur final. Elle consiste à migrer des pages à l’aide denotre outil de migration automatique de GUI, à les corriger et à les intégrer dans une application hybride. Pour créer notre outil de migration de GUI, nous avons conçu un méta-modèle pivot de GUI composé de plusieurs paquetages eprésentant les aspects visuels et comportementaux de toute GUI. Nous avons détaillé plusieurs implémentations de notre outil de migration de GUI qui extraient et génèrent des GUI utilisant différents frameworks.Nous avons appliqué avec succès notre approche de migration sur une application industrielle de Berger-Levrault. L’application migrée est maintenant en production. Nous avons également validé notre outil de migration automatique d’interface graphique sur plusieurs projets de migration incluant des applications développées avec des langages de programmation et de balisage. L’entreprise utilise actuellement notre approche pour d’autres projets de migration

    Approche incrémentale pour la migration des interfaces graphiques d’applications utilisant les métamodèles

    No full text
    Developers use GUI frameworks to design the graphical user interface of their applications. It allows them to reuse existing graphical components and build applications in a fast way. However, with the generalization of mobile devices and Web applications, GUI frameworks evolve at a fast pace: JavaFX replaced Java Swing, Angular 8 replaced Angular 1.4 which had replaced GWT (Google Web Toolkit). Moreover, former GUI frameworks are not supported anymore.This situation forces organizations to migrate their applications to modern frameworks regularly not to become obsolete.To ease the migration of applications, previous researches designed automatic approaches dedicated to some migration projects. Whereas they provide good results, they are hard to adapt to several contexts. For instance, at Berger-Levrault, our industrial partner, applications are written in generic programming languages (Java/GWT), proprietary ``4th generation'' languages (VisualBasic~6, PowerBuilder), or markup languages (Silverlight). Thus, there is a need for a language-agnostic migration approach allowing one to migrate various legacy GUI to the latest technologies. Moreover, when performing automatic migration, part of the migrated application still needs to be manually fixed. This problem is even more important for large applications where this last step can stand for months.Thus, companies need to migrate their application incrementally to ensure end-user delivery throughout the process.In this thesis, we propose a new incremental migration approach. It aims to allow the migration of large applications to ensure end-user delivery. It consists of migrating pages using our automatic GUI migration tool, fixing them, and integrating them in a hybrid application. To create our GUI migration tool, we designed a GUI pivot meta-model composed of several packages representing the visual and the behavioral aspects of any GUI. We detailed multiple implementations of our GUI migration tool that extract and generate GUI using different frameworks.We successfully applied our incremental migration approach to a real industrial application at Berger-Levrault. The migrated application is now in production.We also validated our automatic GUI migration tool on several migration projects, including applications developed with programming and markup languages. The company is currently using our approach for other migration projects.Les développeurs utilisent des frameworks d'interface graphique (GUI frameworks) pour concevoir l'interface utilisateur graphique de leurs applications. Cela leur permet de réutiliser des composants graphiques existants et de construire des applications rapidement. Cependant, avec la généralisation des appareils mobiles et des applications Web, les GUI frameworks évoluent à un rythme rapide : JavaFX a remplacé Java Swing, Angular~8 a remplacé Angular~1.4 qui avait remplacé GWT (Google Web Toolkit). De plus, les anciens GUI frameworks ne sont plus supportés. Cette situation oblige les organisations à migrer régulièrement leurs applications vers des frameworks modernes afin qu'elles ne deviennent pas obsolètes.Pour faciliter la migration des applications, des recherches antérieures ont conçu des approches automatiques dédiées à certains projets de migration. Bien qu'elles fournissent de bons résultats, elles sont difficiles à adapter à plusieurs contextes. Par exemple, chez Berger-Levrault, notre partenaire industriel, les applications sont écrites dans des langages de programmation génériques (Java/GWT), des langages propriétaires de ``4ème génération'' (VisualBasic 6, PowerBuilder), ou des langages de balisage (Silverlight). Il est donc nécessaire d'adopter une approche de migration indépendante du langage, qui permette de faire migrer diverses interfaces graphiques héritées vers les technologies les plus récentes. En outre, lors de la migration automatique, une partie de l'application migrée doit encore être corrigée manuellement. Ce problème est encore plus important pour les grandes applications où cette dernière étape peut durer des mois. Ainsi, les entreprises doivent migrer leur application de manière incrémentielle afin de garantir la livraison à l'utilisateur final tout au long du processus.Dans cette thèse, nous proposons une nouvelle approche de migration incrémentale. Elle vise à permettre la migration de grandes applications afin d'assurer la livraison à l'utilisateur final. Elle consiste à migrer des pages à l'aide de notre outil de migration automatique de GUI, à les corriger et à les intégrer dans une application hybride. Pour créer notre outil de migration de GUI, nous avons conçu un méta-modèle pivot de GUI composé de plusieurs paquetages représentant les aspects visuels et comportementaux de toute GUI. Nous avons détaillé plusieurs implémentations de notre outil de migration de GUI qui extraient et génèrent des GUI utilisant différents frameworks.Nous avons appliqué avec succès notre approche de migration incrémentale sur une application industrielle de Berger-Levrault. L'application migrée est maintenant en production. Nous avons également validé notre outil de migration automatique d'interface graphique sur plusieurs projets de migration incluant des applications développées avec des langages de programmation et de balisage. L'entreprise utilise actuellement notre approche pour d'autres projets de migration

    Approche incrémentale pour la migration des interfaces graphiques d’applications utilisant les métamodèles

    No full text
    Developers use GUI frameworks to design the graphical user interface of their applications. It allows them to reuse existing graphical components and build applications in a fast way. However, with the generalization of mobile devices and Web applications, GUI frameworks evolve at a fast pace: JavaFX replaced Java Swing, Angular 8 replaced Angular 1.4 which had replaced GWT (Google Web Toolkit). Moreover, former GUI frameworks are not supported anymore.This situation forces organizations to migrate their applications to modern frameworks regularly not to become obsolete.To ease the migration of applications, previous researches designed automatic approaches dedicated to some migration projects. Whereas they provide good results, they are hard to adapt to several contexts. For instance, at Berger-Levrault, our industrial partner, applications are written in generic programming languages (Java/GWT), proprietary ``4th generation'' languages (VisualBasic~6, PowerBuilder), or markup languages (Silverlight). Thus, there is a need for a language-agnostic migration approach allowing one to migrate various legacy GUI to the latest technologies. Moreover, when performing automatic migration, part of the migrated application still needs to be manually fixed. This problem is even more important for large applications where this last step can stand for months.Thus, companies need to migrate their application incrementally to ensure end-user delivery throughout the process.In this thesis, we propose a new incremental migration approach. It aims to allow the migration of large applications to ensure end-user delivery. It consists of migrating pages using our automatic GUI migration tool, fixing them, and integrating them in a hybrid application. To create our GUI migration tool, we designed a GUI pivot meta-model composed of several packages representing the visual and the behavioral aspects of any GUI. We detailed multiple implementations of our GUI migration tool that extract and generate GUI using different frameworks.We successfully applied our incremental migration approach to a real industrial application at Berger-Levrault. The migrated application is now in production.We also validated our automatic GUI migration tool on several migration projects, including applications developed with programming and markup languages. The company is currently using our approach for other migration projects.Les développeurs utilisent des frameworks d'interface graphique (GUI frameworks) pour concevoir l'interface utilisateur graphique de leurs applications. Cela leur permet de réutiliser des composants graphiques existants et de construire des applications rapidement. Cependant, avec la généralisation des appareils mobiles et des applications Web, les GUI frameworks évoluent à un rythme rapide : JavaFX a remplacé Java Swing, Angular~8 a remplacé Angular~1.4 qui avait remplacé GWT (Google Web Toolkit). De plus, les anciens GUI frameworks ne sont plus supportés. Cette situation oblige les organisations à migrer régulièrement leurs applications vers des frameworks modernes afin qu'elles ne deviennent pas obsolètes.Pour faciliter la migration des applications, des recherches antérieures ont conçu des approches automatiques dédiées à certains projets de migration. Bien qu'elles fournissent de bons résultats, elles sont difficiles à adapter à plusieurs contextes. Par exemple, chez Berger-Levrault, notre partenaire industriel, les applications sont écrites dans des langages de programmation génériques (Java/GWT), des langages propriétaires de ``4ème génération'' (VisualBasic 6, PowerBuilder), ou des langages de balisage (Silverlight). Il est donc nécessaire d'adopter une approche de migration indépendante du langage, qui permette de faire migrer diverses interfaces graphiques héritées vers les technologies les plus récentes. En outre, lors de la migration automatique, une partie de l'application migrée doit encore être corrigée manuellement. Ce problème est encore plus important pour les grandes applications où cette dernière étape peut durer des mois. Ainsi, les entreprises doivent migrer leur application de manière incrémentielle afin de garantir la livraison à l'utilisateur final tout au long du processus.Dans cette thèse, nous proposons une nouvelle approche de migration incrémentale. Elle vise à permettre la migration de grandes applications afin d'assurer la livraison à l'utilisateur final. Elle consiste à migrer des pages à l'aide de notre outil de migration automatique de GUI, à les corriger et à les intégrer dans une application hybride. Pour créer notre outil de migration de GUI, nous avons conçu un méta-modèle pivot de GUI composé de plusieurs paquetages représentant les aspects visuels et comportementaux de toute GUI. Nous avons détaillé plusieurs implémentations de notre outil de migration de GUI qui extraient et génèrent des GUI utilisant différents frameworks.Nous avons appliqué avec succès notre approche de migration incrémentale sur une application industrielle de Berger-Levrault. L'application migrée est maintenant en production. Nous avons également validé notre outil de migration automatique d'interface graphique sur plusieurs projets de migration incluant des applications développées avec des langages de programmation et de balisage. L'entreprise utilise actuellement notre approche pour d'autres projets de migration
    corecore